﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using System.Linq;

namespace INHOADON_TAMVAN.Chuc_Nang
{
    public partial class frmKhachHang : DevExpress.XtraEditors.XtraForm
    {
        DataClasses1DataContext db = new DataClasses1DataContext(SystemInfo.pub_ConnString);
        bool save = false;
        public frmKhachHang()
        {
            InitializeComponent();
        }

        private void frmKhachHang_Load(object sender, EventArgs e)
        {
            this.load();
        }

        private void btnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (!save)
            {
                this.saveKH();    
            }
        }

        private void btnXoa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (gvKhachHang.RowCount == 0)
            {
                XtraMessageBox.Show("Vui lòng chọn 1 một hàng hóa trong danh sách!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                //vị trí chọn trên grid
                int rowHandles = gvKhachHang.FocusedRowHandle;

                if (rowHandles >= 0)
                {
                    //kiem tra ben bang hoa don
                    string id = gvKhachHang.GetFocusedRowCellValue(colId).ToString();
                    var checkhd = (from hd in db.HoaDons join kh in db.KhachHangs on hd.KH_ID 
                                   equals kh.KH_ID where hd.KH_ID == Convert.ToInt32(id) select hd).SingleOrDefault();
                    if (checkhd == null)
                    {
                        DialogResult result;
                        string tenKH = gvKhachHang.GetFocusedRowCellValue(colHoTenKH).ToString();

                        result = XtraMessageBox.Show("Bạn có chắc muốn xóa " + tenKH + " không?", "Cảnh báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                        if (result == DialogResult.OK)
                        {


                            var khachhang = db.KhachHangs.Single(k => k.KH_ID == Convert.ToInt32(id));
                            db.KhachHangs.DeleteOnSubmit(khachhang);
                            db.SubmitChanges();
                            this.load();
                            XtraMessageBox.Show("Xóa thành công " + tenKH, "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                    else
                    {
                        XtraMessageBox.Show("Khách hàng này đã có trong hóa đơn!", "Không thể xóa ", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        private void btnClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            if (save == false)
            {
                DialogResult result = XtraMessageBox.Show("Bạn chưa lưu khách hàng! Bạn có muốn lưu khách hàng không?", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
                if (result == DialogResult.OK)
                {
                    this.saveKH();
                    this.Close();
                }
                else if (result == DialogResult.Cancel)
                {
                    this.Close();
                }
            }
        }
        private void load()
        {
            db = new DataClasses1DataContext(SystemInfo.pub_ConnString);
            gcKhachHang.DataSource = db.KhachHangs;
        }

        private void saveKH()
        {
            try
            {
                this.Text = this.Text.Substring(0, this.Text.Length - 1);
                db.SubmitChanges();
                save = true;
                XtraMessageBox.Show("Thêm khách hàng thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("Đã có lỗi khi thêm khách hàng xin vui lòng kiểm tra lại!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void gvKhachHang_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
        {
            if (e.Column.FieldName == "")
            {
                if (e.RowHandle >= 0)
                {
                    e.DisplayText = (e.RowHandle + 1).ToString();
                }
            }
        }

        private void gvKhachHang_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            save = false;
            this.Text += "*";
        }

        private void gvKhachHang_ValidateRow(object sender, DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs e)
        {
            string colMaKH = (string)gvKhachHang.GetFocusedRowCellValue(ColKH_MA);
            if (colMaKH == null)
            {
                e.Valid = false;
                gvKhachHang.SetColumnError(ColKH_MA, "Mã khách hàng không được rỗng vui lòng nhập lại");
            }
        }

        private void gvKhachHang_ValidatingEditor(object sender, DevExpress.XtraEditors.Controls.BaseContainerValidateEditorEventArgs e)
        {
           
        }

        private void gvKhachHang_InvalidRowException(object sender, DevExpress.XtraGrid.Views.Base.InvalidRowExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
        }

        private void gvKhachHang_InvalidValueException(object sender, DevExpress.XtraEditors.Controls.InvalidValueExceptionEventArgs e)
        {
            e.ExceptionMode = DevExpress.XtraEditors.Controls.ExceptionMode.NoAction;
        }

        private void gvKhachHang_LostFocus(object sender, EventArgs e)
        {
            //string colMaKH = (string)gvKhachHang.GetFocusedRowCellValue(ColKH_MA);
            //if (colMaKH == null)
            //{
            //    gvKhachHang.SetColumnError(ColKH_MA, "Mã khách hàng không được rỗng! Vui lòng kiểm tra lại!");
            //}          
        }
    }
}